package com.dly.hope.servce;

import com.dly.hope.ro.FileRo;
import com.dly.hope.vo.FileVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;

public interface FileService {

    /**
     * @Description: 根据带后缀的文件名匹配一个ContentType
     * @Param: [fileName]
     * @return: java.lang.String
     * @Author: Danny Chen
     * @Date: 2022/7/19
     */
    String getContentTypeByFileName(String fileName);

    /**
     * @Author linyu.dai
     * @Description 通过 fileRo 来保存文件
     * @Date 2022/8/31 13:04
     * @Param [fileRo]
     * @return com.dly.hope.vo.FileVo
     */
    FileVo save(FileRo fileRo);

    /**
     * @Author linyu.dai
     * @Description 根据fileId来获取带token的url
     * @Date 2022/8/31 13:04
     * @Param [fileId]
     * @return java.lang.String
     */
    String getLoad(String fileId);

    /**
     * @Author linyu.dai
     * @Description 上传
     * @Date 2022/8/31 13:05
     * @Param [is, directory, fileName]
     * @return void
     */
    void upload(InputStream is, String directory, String fileName);

    /**
     * @Author linyu.dai
     * @Description 加载
     * @Date 2022/8/31 13:05
     * @Param [response, token]
     * @return void
     */
    void load(HttpServletResponse response, String token);

    /**
     * 加载具有fileId的文件
     * @param response
     * @param fileId
     */
    void fileIdLoad(HttpServletResponse response, String fileId);

    /**
     * @Author linyu.dai
     * @Description 逻辑删除
     * @Date 2022/11/1 17:08
     * @Param [fileId]
     * @return void
     */
    void delete(String fileId);
}
